<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"  
    xmlns:h="http://java.sun.com/jsf/html"  
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui"
    template="/plantillas/plantilla-sistema.xhtml">
    <ui:define name="cabecera">
        <title>Gestión de Clases</title>
        <link rel="shortcut icon"  href="../../resources/imagenes/favicon.ico" />
    </ui:define>
    <ui:define name="contenido">
        <center>
            <p:panel id="clasePnl" header="Clases" style="width: 950px">
                <h:form id="tablaClaseFrm">
                    <p:dataTable id="tablaClase" var="clase" rows="10" selectionMode="single"
                                 value="#{claseBean.listaClase}" rowKey="#{clase.codigoclase}"
                                 paginator="true" paginatorPosition="bottom" resizableColumns="true"
                                 emptyMessage="No hay registros disponibles.">
                        <p:column headerText="Clase" filterBy="#{clase.nombre}" 
                                  sortBy="#{clase.nombre}" filterMatchMode="contains">
                            <h:outputText id="nombreTxt" value="#{clase.nombre}" />
                        </p:column>
                        <p:column headerText="Sub-Clase" filterBy="#{clase.subclase}" 
                                  sortBy="#{clase.subclase}" filterMatchMode="contains">
                            <h:outputText id="subclaseTxt" value="#{clase.subclase}" />
                        </p:column>
                        <p:column headerText="Infra-Clase" filterBy="#{clase.infraclase}" 
                                  sortBy="#{clase.infraclase}" filterMatchMode="contains">
                            <h:outputText id="infraclaseTxt" value="#{clase.infraclase}" />
                        </p:column>
                        <p:column headerText="Phylum" filterBy="#{clase.phylum.nombre}" 
                                  sortBy="#{clase.phylum.nombre}" filterMatchMode="contains">
                            <h:outputText id="phylumTxt" value="#{clase.phylum.nombre}" />
                        </p:column>
                        <p:column headerText="Habilitado" filterBy="#{clase.habilitado}" 
                                  sortBy="#{clase.habilitado}" filterMatchMode="contains">
                            <h:outputText id="habilitadoTxt" value="#{clase.habilitado}" />
                        </p:column>
                        <p:column headerText="Modificar">
                            <center>
                                <p:commandButton id="modificarBtn" title="Modificar" icon="ui-icon-pencil"
                                                 actionListener="#{claseBean.prepararModificacion(clase)}"
                                                 update=":modificarClaseFrm:modificarClasePnl"
                                                 oncomplete="modificarClaseWgt.show()"/>
                            </center>
                        </p:column>       
                    </p:dataTable>
                    <p:commandButton id="nuevoBtn" value="Nueva Clase"
                                    oncomplete="guardarClaseWgt.show()"
                                    actionListener="#{claseBean.prepararAdicion}"
                                    update=":guardarClaseFrm:guardarClasePnl"
                                    title="Agregar nueva clase" icon="ui-icon-document" />
                </h:form>
            </p:panel>
        </center>
    </ui:define>
    <ui:define name="extra">
        <p:dialog id="guardarClaseDlg" header="Nueva Clase" widgetVar="guardarClaseWgt" 
                  resizable="false" modal="true" showEffect="false">
            <h:form id="guardarClaseFrm">
                <h:panelGrid id="guardarClasePnl" columns="2" style="margin-bottom:10px">
                    <p:outputLabel for="codigophylumTxt" value="Nombre del Phylum: " />
                    <p:selectOneMenu id="codigophylumTxt" value="#{claseBean.clase.phylum}" filter="true"
                                     filterMatchMode="contains">
                        <f:selectItem itemLabel="Seleccione" itemValue="" />
                        <f:selectItems value="#{claseBean.listaPhylum}" />
                        <f:converter converterId="phylumConverter" />                        
                    </p:selectOneMenu>
                    <p:outputLabel for="nombreTxt" value="Nombre de la Clase: " />
                    <p:inputText id="nombreTxt" title="Obligatorio" value="#{claseBean.clase.nombre}" />
                    <p:outputLabel for="subclaseTxt" value="Nombre de la Sub-clase: " />
                    <p:inputText id="subclaseTxt" title="Opcional" value="#{claseBean.clase.subclase}" />
                    <p:outputLabel for="infraclaseTxt" value="Nombre de la Infra-clase: " />
                    <p:inputText id="infraclaseTxt" title="Opcional" value="#{claseBean.clase.infraclase}" />
                    <p:spacer width="20" height="20" />
                    <p:spacer width="20" height="20" />
                    <p:commandButton id="guardarBtn" actionListener="#{claseBean.agregarClase}" 
                                     oncomplete=":guardarClaseWgt.hide()" 
                                     update=":tablaClaseFrm:tablaClase" 
                                     value="Guardar" icon="ui-icon-disk" title="Guardar"/>
                    <p:commandButton value="Cancelar" type="button" onclick="guardarClaseWgt.hide()"
                                     icon="ui-icon-cancel" title="Cancelar"/>
                </h:panelGrid>
            </h:form>
        </p:dialog>
        <p:dialog id="modificarClaseDlg" header="Modificar Clase" widgetVar="modificarClaseWgt" 
                  resizable="false" modal="true" showEffect="false">
            <h:form id="modificarClaseFrm">
                <h:panelGrid id="modificarClasePnl" columns="2" style="margin-bottom:10px">
                    <p:outputLabel for="codigophylumTxt" value="Nombre del Phylum: " />
                    <p:selectOneMenu id="codigophylumTxt" value="#{claseBean.clase.phylum}" filter="true"
                                     filterMatchMode="contains">
                        <f:selectItem itemLabel="Seleccione" itemValue="" />
                        <f:selectItems value="#{claseBean.listaPhylum}" />
                        <f:converter converterId="phylumConverter" />                        
                    </p:selectOneMenu>
                    <p:outputLabel for="nombreTxt" value="Nombre de la Clase: " />
                    <p:inputText id="nombreTxt" title="Obligatorio" value="#{claseBean.clase.nombre}" />
                    <p:outputLabel for="subclaseTxt" value="Nombre de la Sub-clase: " />
                    <p:inputText id="subclaseTxt" title="Opcional" value="#{claseBean.clase.subclase}" />
                    <p:outputLabel for="infraclaseTxt" value="Nombre de la Infra-clase: " />
                    <p:inputText id="infraclaseTxt" title="Opcional" value="#{claseBean.clase.infraclase}" />
                    <p:outputLabel for="habilitadoTxt" value="Habilitado: " />
                    <p:selectBooleanCheckbox id="habilitadoTxt" value="#{claseBean.clase.habilitado}" /> 
                    <p:spacer width="20" height="20" />
                    <p:spacer width="20" height="20" />
                    <p:commandButton id="guardarBtn" actionListener="#{claseBean.actualizarClase}" 
                                     oncomplete=":modificarClaserWgt.hide()" 
                                     update=":tablaClaseFrm:tablaClase" 
                                     value="Guardar" icon="ui-icon-disk" title="Guardar"/>
                    <p:commandButton value="Cancelar" type="button" onclick="modificarClaseWgt.hide()"
                                     icon="ui-icon-cancel" title="Cancelar"/>
                </h:panelGrid>
            </h:form>
        </p:dialog>
    </ui:define>
</ui:composition>